Micron Document
NexusPi Git Node


Displaying Raw • Download

lib/microReticulum/src/Utilities/Print.cpp v1.0.7 (59784a34) Text, 7.41 KB

T8b949e/*
Print.cpp - Base class that provides print() and println()
Copyright (c) 2008 David A. Mellis. All right reserved.

This library is free software; you can redistribute it and/or
modify it under the terms of the GNU Lesser General Public
License as published by the Free Software Foundation; either
version 2.1 of the License, or (at your option) any later version.

This library is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
Lesser General Public License for more details.

You should have received a copy of the GNU Lesser General Public
License along with this library; if not, write to the Free Software
Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA

Modified 23 November 2006 by David A. Mellis
Modified December 2014 by Ivan Grokhotkov
Modified May 2015 by Michael C. Miller - ESP31B progmem support
*/

Tff7b72#Tff7b72ifndef ARDUINO

Tff7b72#Tff7b72include T8b949e<stdlib.h>
Tff7b72#Tff7b72include T8b949e<stdio.h>
Tff7b72#Tff7b72include T8b949e<stdarg.h>
Tff7b72#Tff7b72include T8b949e<string.h>
Tff7b72#Tff7b72include T8b949e<math.h>

Tff7b72#Tff7b72include T8b949e"Print.h"
Tff7b72extern Ta5d6ff"Ta5d6ffCTa5d6ff" Tb4b4b4{
Tff7b72#Tff7b72include T8b949e"time.h"
Tb4b4b4}

T8b949e// Public Methods //////////////////////////////////////////////////////////////

T8b949e/* default implementation: may be overridden */
Tffa657size_t Te6edf3PrintTff7b72:Tff7b72:Te6edf3writeTb4b4b4(Tff7b72const Tffa657uint8_t Tff7b72*Te6edf3bufferTb4b4b4, Tffa657size_t Te6edf3sizeTb4b4b4)
Tb4b4b4{
Tffa657size_t Te6edf3n Tff7b72= T79c0ff0Tb4b4b4;
Tff7b72whileTb4b4b4(Te6edf3sizeTff7b72-Tff7b72-Tb4b4b4) Tb4b4b4{
Te6edf3n Tff7b72+Tff7b72= Te6edf3writeTb4b4b4(Tff7b72*Te6edf3bufferTff7b72+Tff7b72+Tb4b4b4)Tb4b4b4;
Tb4b4b4}
Tff7b72return Te6edf3nTb4b4b4;
Tb4b4b4}

Tffa657size_t Te6edf3PrintTff7b72:Tff7b72:Te6edf3printfTb4b4b4(Tff7b72const Tffa657char Tff7b72*Te6edf3formatTb4b4b4, Tb4b4b4.Tb4b4b4.Tb4b4b4.Tb4b4b4)
Tb4b4b4{
Tffa657char Te6edf3loc_bufTb4b4b4[T79c0ff64Tb4b4b4]Tb4b4b4;
Tffa657char Tff7b72* Te6edf3temp Tff7b72= Te6edf3loc_bufTb4b4b4;
Tffa657va_list Te6edf3argTb4b4b4;
Tffa657va_list Te6edf3copyTb4b4b4;
Te6edf3va_startTb4b4b4(Te6edf3argTb4b4b4, Te6edf3formatTb4b4b4)Tb4b4b4;
Te6edf3va_copyTb4b4b4(Te6edf3copyTb4b4b4, Te6edf3argTb4b4b4)Tb4b4b4;
Tffa657int Te6edf3len Tff7b72= Te6edf3vsnprintfTb4b4b4(Te6edf3tempTb4b4b4, Tff7b72sizeofTb4b4b4(Te6edf3loc_bufTb4b4b4)Tb4b4b4, Te6edf3formatTb4b4b4, Te6edf3copyTb4b4b4)Tb4b4b4;
Te6edf3va_endTb4b4b4(Te6edf3copyTb4b4b4)Tb4b4b4;
Tff7b72ifTb4b4b4(Te6edf3len Tff7b72< T79c0ff0Tb4b4b4) Tb4b4b4{
Te6edf3va_endTb4b4b4(Te6edf3argTb4b4b4)Tb4b4b4;
Tff7b72return T79c0ff0Tb4b4b4;
Tb4b4b4}
Tff7b72ifTb4b4b4(Te6edf3len Tff7b72>Tff7b72= Tb4b4b4(Tffa657intTb4b4b4)Tff7b72sizeofTb4b4b4(Te6edf3loc_bufTb4b4b4)Tb4b4b4)Tb4b4b4{ T8b949e// comparation of same sign type for the compiler
Te6edf3temp Tff7b72= Tb4b4b4(Tffa657charTff7b72*Tb4b4b4) Te6edf3mallocTb4b4b4(Te6edf3lenTff7b72+T79c0ff1Tb4b4b4)Tb4b4b4;
Tff7b72ifTb4b4b4(Te6edf3temp Tff7b72=Tff7b72= Tffa657NULLTb4b4b4) Tb4b4b4{
Te6edf3va_endTb4b4b4(Te6edf3argTb4b4b4)Tb4b4b4;
Tff7b72return T79c0ff0Tb4b4b4;
Tb4b4b4}
Te6edf3len Tff7b72= Te6edf3vsnprintfTb4b4b4(Te6edf3tempTb4b4b4, Te6edf3lenTff7b72+T79c0ff1Tb4b4b4, Te6edf3formatTb4b4b4, Te6edf3argTb4b4b4)Tb4b4b4;
Tb4b4b4}
Te6edf3va_endTb4b4b4(Te6edf3argTb4b4b4)Tb4b4b4;
Te6edf3len Tff7b72= Te6edf3writeTb4b4b4(Tb4b4b4(Tffa657uint8_tTff7b72*Tb4b4b4)Te6edf3tempTb4b4b4, Te6edf3lenTb4b4b4)Tb4b4b4;
Tff7b72ifTb4b4b4(Te6edf3temp Tff7b72!Tff7b72= Te6edf3loc_bufTb4b4b4)Tb4b4b4{
Te6edf3freeTb4b4b4(Te6edf3tempTb4b4b4)Tb4b4b4;
Tb4b4b4}
Tff7b72return Te6edf3lenTb4b4b4;
Tb4b4b4}

Tffa657size_t Te6edf3PrintTff7b72:Tff7b72:Te6edf3printTb4b4b4(Tff7b72const Te6edf3stdTff7b72:Tff7b72:Te6edf3string Tff7b72&Te6edf3sTb4b4b4)
Tb4b4b4{
Tff7b72return Te6edf3writeTb4b4b4(Te6edf3sTb4b4b4.Te6edf3c_strTb4b4b4(Tb4b4b4)Tb4b4b4, Te6edf3sTb4b4b4.Te6edf3lengthTb4b4b4(Tb4b4b4)Tb4b4b4)Tb4b4b4;
Tb4b4b4}

Tffa657size_t Te6edf3PrintTff7b72:Tff7b72:Te6edf3printTb4b4b4(Tff7b72const Tffa657char Te6edf3strTb4b4b4[Tb4b4b4]Tb4b4b4)
Tb4b4b4{
Tff7b72return Te6edf3writeTb4b4b4(Te6edf3strTb4b4b4)Tb4b4b4;
Tb4b4b4}

Tffa657size_t Te6edf3PrintTff7b72:Tff7b72:Te6edf3printTb4b4b4(Tffa657char Te6edf3cTb4b4b4)
Tb4b4b4{
Tff7b72return Te6edf3writeTb4b4b4(Te6edf3cTb4b4b4)Tb4b4b4;
Tb4b4b4}

Tffa657size_t Te6edf3PrintTff7b72:Tff7b72:Te6edf3printTb4b4b4(Tffa657unsigned Tffa657char Te6edf3bTb4b4b4, Tffa657int Te6edf3baseTb4b4b4)
Tb4b4b4{
Tff7b72return Te6edf3printTb4b4b4(Tb4b4b4(Tffa657unsigned Tffa657longTb4b4b4) Te6edf3bTb4b4b4, Te6edf3baseTb4b4b4)Tb4b4b4;
Tb4b4b4}

Tffa657size_t Te6edf3PrintTff7b72:Tff7b72:Te6edf3printTb4b4b4(Tffa657int Te6edf3nTb4b4b4, Tffa657int Te6edf3baseTb4b4b4)
Tb4b4b4{
Tff7b72return Te6edf3printTb4b4b4(Tb4b4b4(Tffa657longTb4b4b4) Te6edf3nTb4b4b4, Te6edf3baseTb4b4b4)Tb4b4b4;
Tb4b4b4}

Tffa657size_t Te6edf3PrintTff7b72:Tff7b72:Te6edf3printTb4b4b4(Tffa657unsigned Tffa657int Te6edf3nTb4b4b4, Tffa657int Te6edf3baseTb4b4b4)
Tb4b4b4{
Tff7b72return Te6edf3printTb4b4b4(Tb4b4b4(Tffa657unsigned Tffa657longTb4b4b4) Te6edf3nTb4b4b4, Te6edf3baseTb4b4b4)Tb4b4b4;
Tb4b4b4}

Tffa657size_t Te6edf3PrintTff7b72:Tff7b72:Te6edf3printTb4b4b4(Tffa657long Te6edf3nTb4b4b4, Tffa657int Te6edf3baseTb4b4b4)
Tb4b4b4{
Tffa657int Te6edf3t Tff7b72= T79c0ff0Tb4b4b4;
Tff7b72if Tb4b4b4(Te6edf3base Tff7b72=Tff7b72= T79c0ff10 Tff7b72&Tff7b72& Te6edf3n Tff7b72< T79c0ff0Tb4b4b4) Tb4b4b4{
Te6edf3t Tff7b72= Te6edf3printTb4b4b4(Ta5d6ff'Ta5d6ff-Ta5d6ff'Tb4b4b4)Tb4b4b4;
Te6edf3n Tff7b72= Tff7b72-Te6edf3nTb4b4b4;
Tb4b4b4}
Tff7b72return Te6edf3printNumberTb4b4b4(Tff7b72static_castTff7b72<Tffa657unsigned Tffa657longTff7b72>Tb4b4b4(Te6edf3nTb4b4b4)Tb4b4b4, Te6edf3baseTb4b4b4) Tff7b72+ Te6edf3tTb4b4b4;
Tb4b4b4}

Tffa657size_t Te6edf3PrintTff7b72:Tff7b72:Te6edf3printTb4b4b4(Tffa657unsigned Tffa657long Te6edf3nTb4b4b4, Tffa657int Te6edf3baseTb4b4b4)
Tb4b4b4{
Tff7b72ifTb4b4b4(Te6edf3base Tff7b72=Tff7b72= T79c0ff0Tb4b4b4) Tb4b4b4{
Tff7b72return Te6edf3writeTb4b4b4(Te6edf3nTb4b4b4)Tb4b4b4;
Tb4b4b4} Tff7b72else Tb4b4b4{
Tff7b72return Te6edf3printNumberTb4b4b4(Te6edf3nTb4b4b4, Te6edf3baseTb4b4b4)Tb4b4b4;
Tb4b4b4}
Tb4b4b4}

Tffa657size_t Te6edf3PrintTff7b72:Tff7b72:Te6edf3printTb4b4b4(Tffa657long Tffa657long Te6edf3nTb4b4b4, Tffa657int Te6edf3baseTb4b4b4)
Tb4b4b4{
Tffa657int Te6edf3t Tff7b72= T79c0ff0Tb4b4b4;
Tff7b72if Tb4b4b4(Te6edf3base Tff7b72=Tff7b72= T79c0ff10 Tff7b72&Tff7b72& Te6edf3n Tff7b72< T79c0ff0Tb4b4b4) Tb4b4b4{
Te6edf3t Tff7b72= Te6edf3printTb4b4b4(Ta5d6ff'Ta5d6ff-Ta5d6ff'Tb4b4b4)Tb4b4b4;
Te6edf3n Tff7b72= Tff7b72-Te6edf3nTb4b4b4;
Tb4b4b4}
Tff7b72return Te6edf3printNumberTb4b4b4(Tff7b72static_castTff7b72<Tffa657unsigned Tffa657long Tffa657longTff7b72>Tb4b4b4(Te6edf3nTb4b4b4)Tb4b4b4, Te6edf3baseTb4b4b4) Tff7b72+ Te6edf3tTb4b4b4;
Tb4b4b4}

Tffa657size_t Te6edf3PrintTff7b72:Tff7b72:Te6edf3printTb4b4b4(Tffa657unsigned Tffa657long Tffa657long Te6edf3nTb4b4b4, Tffa657int Te6edf3baseTb4b4b4)
Tb4b4b4{
Tff7b72if Tb4b4b4(Te6edf3base Tff7b72=Tff7b72= T79c0ff0Tb4b4b4) Tb4b4b4{
Tff7b72return Te6edf3writeTb4b4b4(Te6edf3nTb4b4b4)Tb4b4b4;
Tb4b4b4} Tff7b72else Tb4b4b4{
Tff7b72return Te6edf3printNumberTb4b4b4(Te6edf3nTb4b4b4, Te6edf3baseTb4b4b4)Tb4b4b4;
Tb4b4b4}
Tb4b4b4}

Tffa657size_t Te6edf3PrintTff7b72:Tff7b72:Te6edf3printTb4b4b4(Tffa657double Te6edf3nTb4b4b4, Tffa657int Te6edf3digitsTb4b4b4)
Tb4b4b4{
Tff7b72return Te6edf3printFloatTb4b4b4(Te6edf3nTb4b4b4, Te6edf3digitsTb4b4b4)Tb4b4b4;
Tb4b4b4}

Tffa657size_t Te6edf3PrintTff7b72:Tff7b72:Te6edf3printTb4b4b4(Tff7b72struct T56d364tm Tff7b72* Te6edf3timeinfoTb4b4b4, Tff7b72const Tffa657char Tff7b72* Te6edf3formatTb4b4b4)
Tb4b4b4{
Tff7b72const Tffa657char Tff7b72* Te6edf3f Tff7b72= Te6edf3formatTb4b4b4;
Tff7b72ifTb4b4b4(Tff7b72!Te6edf3fTb4b4b4)Tb4b4b4{
Te6edf3f Tff7b72= Ta5d6ff"Ta5d6ff%cTa5d6ff"Tb4b4b4;
Tb4b4b4}
Tffa657char Te6edf3bufTb4b4b4[T79c0ff64Tb4b4b4]Tb4b4b4;
Tffa657size_t Te6edf3written Tff7b72= Te6edf3strftimeTb4b4b4(Te6edf3bufTb4b4b4, T79c0ff64Tb4b4b4, Te6edf3fTb4b4b4, Te6edf3timeinfoTb4b4b4)Tb4b4b4;
Tff7b72ifTb4b4b4(Te6edf3written Tff7b72=Tff7b72= T79c0ff0Tb4b4b4)Tb4b4b4{
Tff7b72return Te6edf3writtenTb4b4b4;
Tb4b4b4}
Tff7b72return Te6edf3printTb4b4b4(Te6edf3bufTb4b4b4)Tb4b4b4;
Tb4b4b4}

Tffa657size_t Te6edf3PrintTff7b72:Tff7b72:Te6edf3printlnTb4b4b4(Tffa657voidTb4b4b4)
Tb4b4b4{
Tff7b72return Te6edf3printTb4b4b4(Ta5d6ff"Tffea00\rTffea00\nTa5d6ff"Tb4b4b4)Tb4b4b4;
Tb4b4b4}

Tffa657size_t Te6edf3PrintTff7b72:Tff7b72:Te6edf3printlnTb4b4b4(Tff7b72const Te6edf3stdTff7b72:Tff7b72:Te6edf3string Tff7b72&Te6edf3sTb4b4b4)
Tb4b4b4{
Tffa657size_t Te6edf3n Tff7b72= Te6edf3printTb4b4b4(Te6edf3sTb4b4b4)Tb4b4b4;
Te6edf3n Tff7b72+Tff7b72= Te6edf3printlnTb4b4b4(Tb4b4b4)Tb4b4b4;
Tff7b72return Te6edf3nTb4b4b4;
Tb4b4b4}

Tffa657size_t Te6edf3PrintTff7b72:Tff7b72:Te6edf3printlnTb4b4b4(Tff7b72const Tffa657char Te6edf3cTb4b4b4[Tb4b4b4]Tb4b4b4)
Tb4b4b4{
Tffa657size_t Te6edf3n Tff7b72= Te6edf3printTb4b4b4(Te6edf3cTb4b4b4)Tb4b4b4;
Te6edf3n Tff7b72+Tff7b72= Te6edf3printlnTb4b4b4(Tb4b4b4)Tb4b4b4;
Tff7b72return Te6edf3nTb4b4b4;
Tb4b4b4}

Tffa657size_t Te6edf3PrintTff7b72:Tff7b72:Te6edf3printlnTb4b4b4(Tffa657char Te6edf3cTb4b4b4)
Tb4b4b4{
Tffa657size_t Te6edf3n Tff7b72= Te6edf3printTb4b4b4(Te6edf3cTb4b4b4)Tb4b4b4;
Te6edf3n Tff7b72+Tff7b72= Te6edf3printlnTb4b4b4(Tb4b4b4)Tb4b4b4;
Tff7b72return Te6edf3nTb4b4b4;
Tb4b4b4}

Tffa657size_t Te6edf3PrintTff7b72:Tff7b72:Te6edf3printlnTb4b4b4(Tffa657unsigned Tffa657char Te6edf3bTb4b4b4, Tffa657int Te6edf3baseTb4b4b4)
Tb4b4b4{
Tffa657size_t Te6edf3n Tff7b72= Te6edf3printTb4b4b4(Te6edf3bTb4b4b4, Te6edf3baseTb4b4b4)Tb4b4b4;
Te6edf3n Tff7b72+Tff7b72= Te6edf3printlnTb4b4b4(Tb4b4b4)Tb4b4b4;
Tff7b72return Te6edf3nTb4b4b4;
Tb4b4b4}

Tffa657size_t Te6edf3PrintTff7b72:Tff7b72:Te6edf3printlnTb4b4b4(Tffa657int Te6edf3numTb4b4b4, Tffa657int Te6edf3baseTb4b4b4)
Tb4b4b4{
Tffa657size_t Te6edf3n Tff7b72= Te6edf3printTb4b4b4(Te6edf3numTb4b4b4, Te6edf3baseTb4b4b4)Tb4b4b4;
Te6edf3n Tff7b72+Tff7b72= Te6edf3printlnTb4b4b4(Tb4b4b4)Tb4b4b4;
Tff7b72return Te6edf3nTb4b4b4;
Tb4b4b4}

Tffa657size_t Te6edf3PrintTff7b72:Tff7b72:Te6edf3printlnTb4b4b4(Tffa657unsigned Tffa657int Te6edf3numTb4b4b4, Tffa657int Te6edf3baseTb4b4b4)
Tb4b4b4{
Tffa657size_t Te6edf3n Tff7b72= Te6edf3printTb4b4b4(Te6edf3numTb4b4b4, Te6edf3baseTb4b4b4)Tb4b4b4;
Te6edf3n Tff7b72+Tff7b72= Te6edf3printlnTb4b4b4(Tb4b4b4)Tb4b4b4;
Tff7b72return Te6edf3nTb4b4b4;
Tb4b4b4}

Tffa657size_t Te6edf3PrintTff7b72:Tff7b72:Te6edf3printlnTb4b4b4(Tffa657long Te6edf3numTb4b4b4, Tffa657int Te6edf3baseTb4b4b4)
Tb4b4b4{
Tffa657size_t Te6edf3n Tff7b72= Te6edf3printTb4b4b4(Te6edf3numTb4b4b4, Te6edf3baseTb4b4b4)Tb4b4b4;
Te6edf3n Tff7b72+Tff7b72= Te6edf3printlnTb4b4b4(Tb4b4b4)Tb4b4b4;
Tff7b72return Te6edf3nTb4b4b4;
Tb4b4b4}

Tffa657size_t Te6edf3PrintTff7b72:Tff7b72:Te6edf3printlnTb4b4b4(Tffa657unsigned Tffa657long Te6edf3numTb4b4b4, Tffa657int Te6edf3baseTb4b4b4)
Tb4b4b4{
Tffa657size_t Te6edf3n Tff7b72= Te6edf3printTb4b4b4(Te6edf3numTb4b4b4, Te6edf3baseTb4b4b4)Tb4b4b4;
Te6edf3n Tff7b72+Tff7b72= Te6edf3printlnTb4b4b4(Tb4b4b4)Tb4b4b4;
Tff7b72return Te6edf3nTb4b4b4;
Tb4b4b4}

Tffa657size_t Te6edf3PrintTff7b72:Tff7b72:Te6edf3printlnTb4b4b4(Tffa657long Tffa657long Te6edf3numTb4b4b4, Tffa657int Te6edf3baseTb4b4b4)
Tb4b4b4{
Tffa657size_t Te6edf3n Tff7b72= Te6edf3printTb4b4b4(Te6edf3numTb4b4b4, Te6edf3baseTb4b4b4)Tb4b4b4;
Te6edf3n Tff7b72+Tff7b72= Te6edf3printlnTb4b4b4(Tb4b4b4)Tb4b4b4;
Tff7b72return Te6edf3nTb4b4b4;
Tb4b4b4}

Tffa657size_t Te6edf3PrintTff7b72:Tff7b72:Te6edf3printlnTb4b4b4(Tffa657unsigned Tffa657long Tffa657long Te6edf3numTb4b4b4, Tffa657int Te6edf3baseTb4b4b4)
Tb4b4b4{
Tffa657size_t Te6edf3n Tff7b72= Te6edf3printTb4b4b4(Te6edf3numTb4b4b4, Te6edf3baseTb4b4b4)Tb4b4b4;
Te6edf3n Tff7b72+Tff7b72= Te6edf3printlnTb4b4b4(Tb4b4b4)Tb4b4b4;
Tff7b72return Te6edf3nTb4b4b4;
Tb4b4b4}

Tffa657size_t Te6edf3PrintTff7b72:Tff7b72:Te6edf3printlnTb4b4b4(Tffa657double Te6edf3numTb4b4b4, Tffa657int Te6edf3digitsTb4b4b4)
Tb4b4b4{
Tffa657size_t Te6edf3n Tff7b72= Te6edf3printTb4b4b4(Te6edf3numTb4b4b4, Te6edf3digitsTb4b4b4)Tb4b4b4;
Te6edf3n Tff7b72+Tff7b72= Te6edf3printlnTb4b4b4(Tb4b4b4)Tb4b4b4;
Tff7b72return Te6edf3nTb4b4b4;
Tb4b4b4}

Tffa657size_t Te6edf3PrintTff7b72:Tff7b72:Te6edf3printlnTb4b4b4(Tff7b72struct T56d364tm Tff7b72* Te6edf3timeinfoTb4b4b4, Tff7b72const Tffa657char Tff7b72* Te6edf3formatTb4b4b4)
Tb4b4b4{
Tffa657size_t Te6edf3n Tff7b72= Te6edf3printTb4b4b4(Te6edf3timeinfoTb4b4b4, Te6edf3formatTb4b4b4)Tb4b4b4;
Te6edf3n Tff7b72+Tff7b72= Te6edf3printlnTb4b4b4(Tb4b4b4)Tb4b4b4;
Tff7b72return Te6edf3nTb4b4b4;
Tb4b4b4}

T8b949e// Private Methods /////////////////////////////////////////////////////////////

Tffa657size_t Te6edf3PrintTff7b72:Tff7b72:Te6edf3printNumberTb4b4b4(Tffa657unsigned Tffa657long Te6edf3nTb4b4b4, Tffa657uint8_t Te6edf3baseTb4b4b4)
Tb4b4b4{
Tffa657char Te6edf3bufTb4b4b4[T79c0ff8 Tff7b72* Tff7b72sizeofTb4b4b4(Te6edf3nTb4b4b4) Tff7b72+ T79c0ff1Tb4b4b4]Tb4b4b4; T8b949e// Assumes 8-bit chars plus zero byte.
Tffa657char Tff7b72*Te6edf3str Tff7b72= Tff7b72&Te6edf3bufTb4b4b4[Tff7b72sizeofTb4b4b4(Te6edf3bufTb4b4b4) Tff7b72- T79c0ff1Tb4b4b4]Tb4b4b4;

Tff7b72*Te6edf3str Tff7b72= Ta5d6ff'Ta5d6ff\0Ta5d6ff'Tb4b4b4;

T8b949e// prevent crash if called with base == 1
Tff7b72ifTb4b4b4(Te6edf3base Tff7b72< T79c0ff2Tb4b4b4) Tb4b4b4{
Te6edf3base Tff7b72= T79c0ff10Tb4b4b4;
Tb4b4b4}

Tff7b72do Tb4b4b4{
Tffa657char Te6edf3c Tff7b72= Te6edf3n Tff7b72% Te6edf3baseTb4b4b4;
Te6edf3n Tff7b72/Tff7b72= Te6edf3baseTb4b4b4;

Tff7b72*Tff7b72-Tff7b72-Te6edf3str Tff7b72= Te6edf3c Tff7b72< T79c0ff10 Tff7b72? Te6edf3c Tff7b72+ Ta5d6ff'Ta5d6ff0Ta5d6ff' Tff7b72: Te6edf3c Tff7b72+ Ta5d6ff'Ta5d6ffATa5d6ff' Tff7b72- T79c0ff10Tb4b4b4;
Tb4b4b4} Tff7b72while Tb4b4b4(Te6edf3nTb4b4b4)Tb4b4b4;

Tff7b72return Te6edf3writeTb4b4b4(Te6edf3strTb4b4b4)Tb4b4b4;
Tb4b4b4}

Tffa657size_t Te6edf3PrintTff7b72:Tff7b72:Te6edf3printNumberTb4b4b4(Tffa657unsigned Tffa657long Tffa657long Te6edf3nTb4b4b4, Tffa657uint8_t Te6edf3baseTb4b4b4)
Tb4b4b4{
Tffa657char Te6edf3bufTb4b4b4[T79c0ff8 Tff7b72* Tff7b72sizeofTb4b4b4(Te6edf3nTb4b4b4) Tff7b72+ T79c0ff1Tb4b4b4]Tb4b4b4; T8b949e// Assumes 8-bit chars plus zero byte.
Tffa657charTff7b72* Te6edf3str Tff7b72= Tff7b72&Te6edf3bufTb4b4b4[Tff7b72sizeofTb4b4b4(Te6edf3bufTb4b4b4) Tff7b72- T79c0ff1Tb4b4b4]Tb4b4b4;

Tff7b72*Te6edf3str Tff7b72= Ta5d6ff'Ta5d6ff\0Ta5d6ff'Tb4b4b4;

T8b949e// prevent crash if called with base == 1
Tff7b72if Tb4b4b4(Te6edf3base Tff7b72< T79c0ff2Tb4b4b4) Tb4b4b4{
Te6edf3base Tff7b72= T79c0ff10Tb4b4b4;
Tb4b4b4}

Tff7b72do Tb4b4b4{
Tff7b72auto Te6edf3m Tff7b72= Te6edf3nTb4b4b4;
Te6edf3n Tff7b72/Tff7b72= Te6edf3baseTb4b4b4;
Tffa657char Te6edf3c Tff7b72= Te6edf3m Tff7b72- Te6edf3base Tff7b72* Te6edf3nTb4b4b4;

Tff7b72*Tff7b72-Tff7b72-Te6edf3str Tff7b72= Te6edf3c Tff7b72< T79c0ff10 Tff7b72? Te6edf3c Tff7b72+ Ta5d6ff'Ta5d6ff0Ta5d6ff' Tff7b72: Te6edf3c Tff7b72+ Ta5d6ff'Ta5d6ffATa5d6ff' Tff7b72- T79c0ff10Tb4b4b4;
Tb4b4b4} Tff7b72while Tb4b4b4(Te6edf3nTb4b4b4)Tb4b4b4;

Tff7b72return Te6edf3writeTb4b4b4(Te6edf3strTb4b4b4)Tb4b4b4;
Tb4b4b4}

Tffa657size_t Te6edf3PrintTff7b72:Tff7b72:Te6edf3printFloatTb4b4b4(Tffa657double Te6edf3numberTb4b4b4, Tffa657uint8_t Te6edf3digitsTb4b4b4)
Tb4b4b4{
Tffa657size_t Te6edf3n Tff7b72= T79c0ff0Tb4b4b4;

Tff7b72ifTb4b4b4(Te6edf3isnanTb4b4b4(Te6edf3numberTb4b4b4)Tb4b4b4) Tb4b4b4{
Tff7b72return Te6edf3printTb4b4b4(Ta5d6ff"Ta5d6ffnanTa5d6ff"Tb4b4b4)Tb4b4b4;
Tb4b4b4}
Tff7b72ifTb4b4b4(Te6edf3isinfTb4b4b4(Te6edf3numberTb4b4b4)Tb4b4b4) Tb4b4b4{
Tff7b72return Te6edf3printTb4b4b4(Ta5d6ff"Ta5d6ffinfTa5d6ff"Tb4b4b4)Tb4b4b4;
Tb4b4b4}
Tff7b72ifTb4b4b4(Te6edf3number Tff7b72> T79c0ff4294967040.0Tb4b4b4) Tb4b4b4{
Tff7b72return Te6edf3printTb4b4b4(Ta5d6ff"Ta5d6ffovfTa5d6ff"Tb4b4b4)Tb4b4b4; T8b949e// constant determined empirically
Tb4b4b4}
Tff7b72ifTb4b4b4(Te6edf3number Tff7b72< T79c0ff-4294967040.0Tb4b4b4) Tb4b4b4{
Tff7b72return Te6edf3printTb4b4b4(Ta5d6ff"Ta5d6ffovfTa5d6ff"Tb4b4b4)Tb4b4b4; T8b949e// constant determined empirically
Tb4b4b4}

T8b949e// Handle negative numbers
Tff7b72ifTb4b4b4(Te6edf3number Tff7b72< T79c0ff0.0Tb4b4b4) Tb4b4b4{
Te6edf3n Tff7b72+Tff7b72= Te6edf3printTb4b4b4(Ta5d6ff'Ta5d6ff-Ta5d6ff'Tb4b4b4)Tb4b4b4;
Te6edf3number Tff7b72= Tff7b72-Te6edf3numberTb4b4b4;
Tb4b4b4}

T8b949e// Round correctly so that print(1.999, 2) prints as "2.00"
Tffa657double Te6edf3rounding Tff7b72= T79c0ff0.5Tb4b4b4;
Tff7b72forTb4b4b4(Tffa657uint8_t Te6edf3i Tff7b72= T79c0ff0Tb4b4b4; Te6edf3i Tff7b72< Te6edf3digitsTb4b4b4; Tff7b72+Tff7b72+Te6edf3iTb4b4b4) Tb4b4b4{
Te6edf3rounding Tff7b72/Tff7b72= T79c0ff10.0Tb4b4b4;
Tb4b4b4}

Te6edf3number Tff7b72+Tff7b72= Te6edf3roundingTb4b4b4;

T8b949e// Extract the integer part of the number and print it
Tffa657unsigned Tffa657long Te6edf3int_part Tff7b72= Tb4b4b4(Tffa657unsigned Tffa657longTb4b4b4) Te6edf3numberTb4b4b4;
Tffa657double Te6edf3remainder Tff7b72= Te6edf3number Tff7b72- Tb4b4b4(Tffa657doubleTb4b4b4) Te6edf3int_partTb4b4b4;
Te6edf3n Tff7b72+Tff7b72= Te6edf3printTb4b4b4(Te6edf3int_partTb4b4b4)Tb4b4b4;

T8b949e// Print the decimal point, but only if there are digits beyond
Tff7b72ifTb4b4b4(Te6edf3digits Tff7b72> T79c0ff0Tb4b4b4) Tb4b4b4{
Te6edf3n Tff7b72+Tff7b72= Te6edf3printTb4b4b4(Ta5d6ff"Ta5d6ff.Ta5d6ff"Tb4b4b4)Tb4b4b4;
Tb4b4b4}

T8b949e// Extract digits from the remainder one at a time
Tff7b72whileTb4b4b4(Te6edf3digitsTff7b72-Tff7b72- Tff7b72> T79c0ff0Tb4b4b4) Tb4b4b4{
Te6edf3remainder Tff7b72*Tff7b72= T79c0ff10.0Tb4b4b4;
Tffa657int Te6edf3toPrint Tff7b72= Tffa657intTb4b4b4(Te6edf3remainderTb4b4b4)Tb4b4b4;
Te6edf3n Tff7b72+Tff7b72= Te6edf3printTb4b4b4(Te6edf3toPrintTb4b4b4)Tb4b4b4;
Te6edf3remainder Tff7b72-Tff7b72= Te6edf3toPrintTb4b4b4;
Tb4b4b4}

Tff7b72return Te6edf3nTb4b4b4;
Tb4b4b4}

Tff7b72#Tff7b72endif

Served by rngit 1.4.2 - Generated in 0.17s